/* 函数 */

// 参数类型注解===============================================================================================================
// 每个参数后面添加一个类型注解，声明函数可以接受什么类型的参数
function greet(name: string) {
  console.log("Hello, " + name.toUpperCase() + "!!");
}

greet(42);
// Error：Argument of type 'number' is not assignable to parameter of type 'string'.ts(2345)

// 返回值类型注解===============================================================================================================
// 不需要总是添加返回值类型注解，TypeScript 会基于它的 return 语句推断函数的返回类型
function getFavoriteNumber(): number {
  return 26;
}

function getFavoriteNumber1() {
  return 26;
}

// 匿名函数==============================================================================================================
const names = ["Alice", "Bob", "Eve"];

// 可以进行上下文推断
names.forEach(function (s) {
  console.log(s.toUpperCase());
});

// 箭头函数
names.forEach((s) => {
  console.log(s.toUpperCase());
});